home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / HARDWARE.SWG / 0028_Get CPU Type.pas < prev    next >
Pascal/Delphi Source File  |  1994-05-25  |  1KB  |  73 lines

  1.  
  2. {$D-} {$L-}
  3. Program Cpuu;
  4.  
  5. Const
  6.     Cpu      : Array[1..4] of String[5] = ('8086','80286','80386','80486');
  7.     Cpu8086  = 1;
  8.     Cpu80286 = 2;
  9.     Cpu80386 = 3;
  10.     Cpu80486 = 4;
  11.  
  12. Function GetCPU_Type: Byte; Assembler;
  13. ASM
  14.  MOV    DX, CPU8086
  15.  PUSH   SP
  16.  POP    AX
  17.  CMP    SP,AX
  18.  JNE    @OUT
  19.  MOV    DX, CPU80286
  20.  PUSHF
  21.  
  22.  POP    AX
  23.  OR     AX,4000h
  24.  PUSH   AX
  25.  POPF
  26.  PUSHF
  27.  POP    AX
  28.  TEST   AX,4000H
  29.  JE     @OUT
  30.  MOV    DX,CPU80386
  31.  {"DB 66h" INDICATES '386 EXTENDED INSTRUCTION}
  32.  DB 66h
  33.  MOV    BX,SP
  34.  DB 66h, 83h, 0E4h, 0FCh
  35.  DB 66h
  36.  PUSHF
  37.  DB 66h
  38.  POP AX
  39.  DB 66h
  40.  MOV    CX,AX
  41.  DB 66h, 35h, 00h
  42.  DB 00h, 04h, 00
  43.  DB 66h
  44.  PUSH   AX
  45.  DB 66h
  46.  POPF
  47.  DB 66h
  48.  PUSHF
  49.  DB 66h
  50.  POP    AX
  51.  DB 66h,25h, 00h
  52.  DB 00h, 04h, 00h
  53.  DB 66h, 81h, 0E1h, 00h
  54.  DB 00h, 04h, 00h
  55.  DB 66h
  56.  CMP    AX,CX
  57.  JE @NOT486
  58.  MOV DX, CPU80486
  59. @NOT486:
  60.  DB 66h
  61.  PUSH   CX
  62.  DB 66h
  63.  POPF
  64.  DB 66h
  65.  MOV    SP,BX
  66. @OUT:
  67.  MOV    AX,DX
  68. End;
  69.  
  70. Begin
  71.     Writeln; Writeln('I detected an ',Cpu[GetCpu_Type],' chip.');
  72. End.
  73.